El presente proyecto se a ido desarrollando a partir de la experiencia y trabajos que he desarrollado durante toda la carrera. Este proyecto se hace con la finalidad de dar a conocer el tema ya que es muy importante, de igual manera este proyecto se hace con la finalidad de titulación.
¿Qué es mininet? Este es un emulador para el despliegue de rede sobre los limitados recursos de un ordenador sencillo simple o máquina virtual. Éste utiliza el kernel de Linux y otros recursos para emular elementos de la SDN como el controlador, los switches OpenFlow y los hosts. Podrás entrar al siguiente enlace para saber más acerca de lo que es mininet y sobre las funciones que tiene. programmerclick.com Una vez entiendo el concepto de mininet comenzaremos con la instalación para llevar acabo nuestro proyecto.
Dentro de nuestra máquina virtual entraremos a la terminal para poder iniciar con la instalación de mininet y poder crear la topología que se necesita para poder llevar acabo nuestro proyecto. Una vez abierta la terminal pondremos el siguiente comando:
sudo apt-get update
Este comando nos servirá para poder descargar todos los paquetes que estén disponibles y nos sean de ayuda.
Una vez teniendo los paquetes vamos a clonar los repositorios de git con el siguiente comando:
sudo git://github.com/mininet/mininet
Ahora bien ya que clonamos los repositorios de git entraremos a la carpeta de Mininet con el siguiente comando.
git tag
Para poder observar las diferentes ramas y versiones que esta contiene disponible.
Se instalara la última versión estable la cual es la 2.2.2 como se muestra en la siguiente figura 1.1.
Figura 1.1: Mininet trabajara bajo la última versión bajo el comando ya establecido anteriormente.
El siguiente paso a seguir nos servirá para movernos a la rama que nosotros deseamos en este caso será en la versión 2.2.2 esto se lograra mediante el comando.
sudo git checkout –b 2.2.2 2.2.2
Una vez instalada la versión, podremos limpiar la terminar para poder continuar con el siguiente comando:
sudo mininet/util/install.sh –a
Este comando nos ayudara hacer la instalación adecuada de Mininet sabremos que lo hemos hecho bien cuando nos aparezca en la pantalla que todos los paquetes se están descargando correctamente como aparece en la figura 1.2.
Figura 1.2: Descarga de paquetes para a completar la instalación y pueda funcionar adecuadamente.
Una vez que la instalación finalizo mininet quedo instalado correctamente, listo para usarse y poder crear topologías. Para poder entrar al emulador de mininet existen dos formas distintas mediante código, donde creas la topología o entrar directamente al emulador por medio de una terminal. La opción que nosotros vamos a manejar será la segunda ya que se me hace más fácil de manipular y seria mediante los siguientes comandos.
cd mininet cd examples
./miniedit.py
Podemos apreciar los comandos en la figura 1.3:
Figura 1.3: Mininet se inicializa a través de los comandos mencionados anteriormente.
De esta manera podremos entrar al emulador de mininet y poder crear la topología con la cual estaremos trabajando.
Figura 1.4: Creación de la topología y conexión de los dispositivos.
En este apartado se hablara sobre la placa con la cual estaremos trabajando, el programa que se necesita para que esta funcione adecuadamente, así mismo el sensor con el cual trabajaremos y el código que se necesita.
Placa de RASPBERRY PY 3
La Raspberry Pi es una serie de ordenadores de placa reducida, ordenadores de placa única u ordenadores de placa simple de bajo costo.
Para que esta placa funcione adecuadamente se necesitara
Una vez teniendo nuestras herramientas listas procederemos a instalar el sistema operativo en nuestra memoria SD que necesitara la placa Raspberry py para que tenga un buen funcionamiento.
Raspberry Pi necesita un sistema operativo para funcionar. Raspberry Pi (anteriormente llamado Raspbian) es nuestro sistema operativo compatible oficial. En el siguiente enlace se dejara la página oficial para que lo puedan descargar y guiarse con el paso a paso que se explica. raspberrypi.com
Todo tiene que quedar conectado correctamente como se muestra en la siguiente figura 2.1.
Figura 2.1: Conexión de los dispositivos que se necesitaron para la placa Raspberry Py
SENSOR DHT11 El DHT11 es un sensor digital de temperatura y humedad relativa de bajo costo y fácil uso. Integra un sensor capacitivo de humedad y un termistor para medir el aire circundante, y muestra los datos mediante una señal digital en el pin de datos.
El circuito que vamos a utilizar será el siguiente:
Figura 2.2: Circuito utilizado para el sensor, con el cual se va a trabajar para medir la temperatura.
Para que este circuito funcione junto con el sensor tenemos que diseñar el código que va de acuerdo el sensor y a la placa que estamos utilizando. En este caso nosotros utilizamos el siguiente código:
import Adafruit_DHT
import time
DHT-SENSOR = Adafruit_DHT.DHT11
DHT_PIN = 4
while True:
humidity, temperature = Adafruit_DHT.read(DHT_SENDOR, DHT_PIN)
if humudity is not None and temperature is not None:
print("Temp={0:0.1f}C Humidity={1:0.1f}%.format(temperature, humidity))
else:
print("Sensor fail. Check wiring.");
time.sleep(1);
Una vez teniendo el codigo empezara a tomar la temperatura del aire, como se muestra en la siguinete figura 2.3.
Figura 2.3:Código utilizado para el funcionamiento del sensor y nos pueda mostrar los datos con lo que vamos a trabajar.
El protocolo Openflow es un estándar definido por la ONF (Open Networking Foundation) como la primera interfaz estándar para la comunicación de la capa de control y la capa de infraestructura de la arquitectura, y fue especialmente diseñada para la arquitectura SDN. Openflow proporciona un protocolo abierto para programar el flujo en diferentes dispositivos de red como conmutadores y enrutadores.
Para saber más sobre RYU les dejare el siguiente link para que puedan leer más sobre el:
Ahora bien una vez teniendo el concepto comenzaremos con la instalación:
Como primer paso lo que haremos es la actualización de RYU con el comando:
sudo apt-get update
Como siguiente paso instalaremos los repositorios de git con el comando
sudo apt-get install git
En caso de que los repositorios ya estén instalados se mandara un mensaje de Hecho como se muestra en la siguiente figura:
Figura 4.1: Los repositorios han sido instalados correctamente para poder ejecutarse y seguir adelante con la práctica.
Vamos a instalar Python de igual manera clonaremos los repositorios de git con el siguiente comando:
sudo apt-get install Python.pip
git clone git://github.com/osrg/ryu
Una vez que se terminado el procedimiento de instalación y la clonación instalaremos las herramientas necesarias con el siguiente comando:
sudo pip install –r tolos/pip-requires
Comprobaremos que los pasos anteriores han sido exitosos con el siguiente comando como se muestra en la figura 3.1
ryu manager
Figura 3.1: Comprobación de los pasos anteriores
Una vez que tenemos instalado correctamente todo entraremos a la terminal de la topología para hacer la implementación y configuración del controlador, ya que esta es una pieza clave para poder permitir o denegar la transición de los paquetes. Se habilitara el acceso en la terminal con los siguientes comandos:
ovs-vsctl set Bridge s1 protocols=OpenFlow13
ryu-manager ryu.app.rest_firewall
IAMGEN1
Ahora bien se modificara el estado inicial de firewall, para esto abriremos una nueva terminal en la cual pondremos las siguientes líneas de comando:
curl -X PUT http://localhost:8080/firewall/module/enable/0000000000000001
curl http://localhost:8080/firewall/module/status
Como siguiente paso haremos la prueba enviando un ping de un host a otro para poder si la conexión ha sido exitosa como se muestra en la siguiente figura
ping 10.0.0.2
IMAGEN2
Vamos a configurar las reglas que son las más importantes ya que estas van a especificar el flujo de los paquetes de los dispositivos, esto con los dispositivos, siguiendo las reglas de restricción. Con los siguientes comandos:
curl -X POST -d '{"nw_src": "10.0.0.2/32", "nw_dst": "10.0.0.1/32", "nw_proto": "ICMP"}' http://localhost:8080/firewall/rules/0000000000000001
curl -X POST -d '{"nw_src": "10.0.0.1/32", "nw_dst": "10.0.0.2/32", "nw_proto": "ICMP"}' http://localhost:8080/firewall/rules/0000000000000001
Estas reglas que acabamos de utilizar se verán reflejadas como entradas de flujo como se muestra en la figura
IMAGEN3
Wireshark se ha convertido en una bendición para cualquier administrador de sistemas o profesional de seguridad. Se trata de un software que permite analizar el tráfico red en tiempo real. Pero su particularidad es que a menudo es la mejor herramienta para solucionar los problemas de Red como la latencia o actividad maliciosa como intentos de piratería. Podrás entrar al siguiente enlace para saber más acerca de lo que es Wireshark y sobre las funciones que tiene.
Los resultados sobre la transmisión de datos definidos entre la comunicación de los dispositivos, se inicia la instrucción ifconfig, con esto vamos a visualizar los detalles de los dispositivos, para asegurarnos que los pasos se realizaron correctamente y se pondrá la ip que los conecta.
Para poder visualizar mucho mejor los resultados se utiliza Wireshark dentro de este pasaremos el ip correspondiente a donde hemos estado trabajando en nuestro caso será el ip de host2 como se muestra en las siguientes imágenes.
Figura 4.1: Se enviaron los datos para poder capturarlo
Figura 4.2: Captura disponibles para el filtrado de dtos